package com.hose.proxy;

import java.lang.reflect.Proxy;

/**
 * 定义创建代理对象的工厂，用于创建代理对象使用，<T>就是起到泛型约束的作用，有了这个才可以用T来代替具体的类型，更通用
 */
public class ProxyFactory {
    //创建具体的代理对象，用泛型就更方便了，会自动强转，且返回值类型不会写死，更通用
    public static <T> T createProxy(Class<T> targetInterface) {
        return (T) Proxy.newProxyInstance(
                targetInterface.getClassLoader(),
                new Class[]{targetInterface},
                new CustomProxyHandler()
        );
    }

}
